﻿#pragma once

#include <occmesh/api/utils.h>

class ParamBuilder
{
  public:
    ParamBuilder(const std::vector<gp_Pnt> &cloud);

    Handle(Geom_BSplineSurface) Build(int Nu, int Nv,         // 控制网格规模
                                      int p, int q,           // 次数
                                      std::vector<double> &w, // 每个点的拟合权重
                                      double alpha = 1e-6,    // 弦长最小化权重
                                      double beta = 1e-3,     // 二阶平滑化权重
                                      int times = 3           // 优化次数
    );

  private:
    std::vector<gp_Pnt> m_cloud;
};
